//
// Created by denglibin on 2021/3/29.
// 音频播放
#include <SDL.h>
#include <SDL_mixer.h>


/**
 * 初始化
 */
static void init(){
    int r = Mix_Init(MIX_INIT_MOD);
    if(r == 0){
        SDL_Log("Can not init mixer %s\n", SDL_GetError());
        exit(1);
    }
    //打开音频设备
    Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 2048);
}

/**
 * 播放背景音乐
 */
static void playBackMusic(){
    //Mix_Music* m = Mix_LoadMUS("audio/boom_start.wav");
    Mix_Music* m = Mix_LoadMUS("audio/地上.mp3");
    if(m == NULL){
        SDL_Log("Can not load music  %s\n", SDL_GetError());
        exit(1);
    }
    //第一个参数是加载音乐返回的 Mix_Music 指针，第二个参数是播放的次数，如果为 -1，则一直重复播放。有个地方需要了解，当这个函数被重复调用的时候，
    // 并不会产生多个音频同时播放的效果，最终播放永远是最后播放的那个音频文件，并且总是从头开始播放。
    Mix_PlayMusic(m, -1);
    SDL_Delay(10000);
    Mix_FreeMusic(m);
}
/**
 * 播放特效音乐
 */
static void playSpecialMusic(){
    Mix_Chunk * music  = Mix_LoadWAV("audio/boom_start.wav");
    if(music  == NULL){
        SDL_Log("Can not load music  %s\n", SDL_GetError());
        exit(1);
    }

    Mix_PlayChannel(-1, music, 0);
    SDL_Delay(10000);
    Mix_FreeChunk(music);
}

static void clean(){
    Mix_CloseAudio();
    Mix_Quit();
}
int main15(int argc, char* argv[]){

    init();
    //playBackMusic();
    playSpecialMusic();

    clean();
    return 0;
}